
package com.deliccio.entitys;

import java.io.Serializable;
import java.lang.reflect.Method;
import java.util.Date;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import com.deliccio.connect.Entidad;

@Entity
@Table(name="cliente")
public class Cliente implements Entidad,Serializable{
	private static final long serialVersionUID=1L;
	@Id
	@Basic(optional=false)
    @GeneratedValue(strategy = GenerationType.IDENTITY)
	@Column(name="idcliente",nullable=false)
	private Integer id;

	@Column(name="email",length=20)
	private String email;
	@Column(name="telefono",length=20)
	private String telefono;
	@Column(name="sexo")
	private Character sexo;
	@Column(name="fecNacimiento")
	@Temporal(TemporalType.DATE)
	private Date fecNacimiento;
	@Column(name="tipoDoc")
	private Character tipoDoc;
	@Column(name="numeroDoc",length=20)
	private String numeroDoc;

	@Column(name="apellidos",length=20)
	private String apellidos;

	@Column(name="login",length=20)
	private String login;

	@Column(name="nombre",length=20)
	private String nombre;

	@Column(name="pass",length=20)
	private String pass;

	@Column(name="razonsocial",length=20)
	private String razonsocial;

	@OneToMany(mappedBy="cliente")
	private List<Pedidos> pedidosList;
	/*
	 * @JoinColumn(name = "idcliente", referencedColumnName = "idpersona",
	 * nullable = false, insertable = false, updatable = false)
	 * 
	 * @OneToOne(optional = false, fetch = FetchType.LAZY) private Persona
	 * persona;
	 */
	// bi-directional many-to-one association to Parametro

	@ManyToOne(fetch=FetchType.EAGER)
	@JoinColumn(name="idperfil")
	private Parametros parametro;
	
	public Cliente(Integer id,String apellidos,String nombre){
		this.id=id;
		this.apellidos=apellidos;
		this.nombre=nombre;
	}

	public Cliente(){
	}

	public Integer getId(){
		return id;
	}

	public void setId(Integer id){
		this.id=id;
	}

	public String getEmail(){
		return email;
	}

	public void setEmail(String email){
		this.email=email;
	}

	public String getTelefono(){
		return telefono;
	}

	public void setTelefono(String telefono){
		this.telefono=telefono;
	}

	public Character getSexo(){
		return sexo;
	}

	public void setSexo(Character sexo){
		this.sexo=sexo;
	}

	public Date getFecNacimiento(){
		return fecNacimiento;
	}

	public void setFecNacimiento(Date fecNacimiento){
		this.fecNacimiento=fecNacimiento;
	}

	public Character getTipoDoc(){
		return tipoDoc;
	}

	public void setTipoDoc(Character tipoDoc){
		this.tipoDoc=tipoDoc;
	}

	public String getNumeroDoc(){
		return numeroDoc;
	}

	public void setNumeroDoc(String numeroDoc){
		this.numeroDoc=numeroDoc;
	}

	public List<Pedidos> getPedidosList(){
		return pedidosList;
	}

	public void setPedidosList(List<Pedidos> pedidosList){
		this.pedidosList=pedidosList;
	}

	public Parametros getParametro(){
		return parametro;
	}


	public void setParametro(Parametros parametro){
		this.parametro=parametro;
	}



	public String getApellidos(){
		return apellidos;
	}

	public String getLogin(){
		return login;
	}

	public String getNombre(){
		return nombre;
	}

	public String getPass(){
		return pass;
	}

	public String getRazonsocial(){
		return razonsocial;
	}

	public void setApellidos(String apellidos){
		this.apellidos=apellidos;
	}

	public void setLogin(String login){
		this.login=login;
	}

	public void setNombre(String nombre){
		this.nombre=nombre;
	}

	public void setPass(String pass){
		this.pass=pass;
	}

	public void setRazonsocial(String razonsocial){
		this.razonsocial=razonsocial;
	}

	/*
	 * public Persona getPersona() { return persona; }
	 * 
	 * public void setPersona(Persona persona) { this.persona = persona; }
	 */

    @SuppressWarnings("rawtypes")
	@Override
	public String toString() {
		String toString = "[";
		@SuppressWarnings("unused")
		String campo,iscampo = "";
		try {
			Class clase = this.getClass();
			Method[] metodos = clase.getDeclaredMethods();
			for (Method met:metodos) {					
				if (met.getName().indexOf("get") >= 0) {
					toString += met.getName()+"="+met.invoke(this, null)+" - ";
				}
			}								
			toString+="]";
		} catch (Exception e) {			
			System.out.println(e);
		}
		return toString;
	}
}
